//引用文件系统模块
var fs = require("fs");
//引用imageinfo模块
var imageInfo = require("imageinfo");
//引用images模块
var images = require('images');
var watermarkImg = images('./tool/water.png');//水印图片地址
function readFileList(path, filesList) {
    var files = fs.readdirSync(path);
    files.forEach(function (itm, index) {
        var stat = fs.statSync(path + itm);
        if (stat.isDirectory()) {
            //递归读取文件
            readFileList(path + itm + "/", filesList)
        } else {
            var obj = {};//定义一个对象存放文件的路径和名字
            obj.path = path;//路径
            obj.filename = itm//名字
            filesList.push(obj);
        }
    })
}
var getFiles = {
    //获取文件夹下的所有文件
    getFileList: function (path) {
        var filesList = [];
        readFileList(path, filesList);
        return filesList;
    },
    //获取文件夹下的所有图片
    getImageFiles: function (path) {
        var imageList = [];
        this.getFileList(path).forEach((item) => {
            var ms = imageInfo(fs.readFileSync(item.path + item.filename));
            ms.mimeType && (imageList.push(item.filename))
        });
        return imageList;
    }
};
/**
 * 批量图片添加水印
 */
exports.addWaterMarker=function () { 
    //获取文件夹下的所有图片
    var photos = getFiles.getImageFiles("./uploads/");
    for (var i = 0; i < photos.length; i++) {
        var sourceImg = images('./uploads/' + photos[i]);
        var sourceImgName = photos[i];
        var sWidth = sourceImg.width();
        var sHeight = sourceImg.height();
        var wmWidth = watermarkImg.width();
        var wmHeight = watermarkImg.height();
        images(sourceImg)
            // 设置绘制的坐标位置，右下角距离 40px
            .draw(watermarkImg, sWidth - wmWidth - 10, sHeight - wmHeight - 10)
            // 保存格式会自动识别
            .save('./images/' + sourceImgName + '');
    }
}
/**
图片批量压缩
参数：
path 必传,类型为string,是要压缩图片路径
*/
exports.imageCompress=function (path){
    fs.readdir(path, function(err, files){
    //err 为错误 , files 文件名列表包含文件夹与文件
        if(err){
            console.log('error:\n' + err);
            return;
        }

        files.forEach(function(file){

            fs.stat(path + '/' + file, function(err, stat){
                if(err){console.log(err); return;}
                if(stat.isDirectory()){                 
                    // 如果是文件夹遍历
                    explorer(path + '/' + file);
                }else{
                    // 读出所有的文件
                    console.log('文件名:' + path + '/' + file);
                    var name = path + '/' + file;
                    var outName = path + '/' +'another_'+file
                    images(name)
                        .save(outName, {               //Save the image to a file,whih quality 50
                                quality : 60                    //保存图片到文件,图片质量为50
                            });

                }               
            });

        });

    });
}